/**
 * Libreria de funciones javaScript
 */

/**
 * Metodo que realiza las validaciones al seleccionar una mesa.
 *  --- FALTA VALIDAR LA CANTIDAD DE COMENSALES ---
 * @param idSector
 * @param idMesa
 * @returns {Boolean}
 */
function selecMesa(idSector, idMesa) 
{			
	var cantMesasSel = parseInt($("#cantMesasSeleccion").val());
	var sector = $("#sector").val();
	var button = "#" + idSector + "_" + idMesa;
	
	if(sector == '') {
		sector = idSector;
	}
	
	if($(button).hasClass("btn-success")) {
    //valido que las mesas esten en el mismo sector
		if(sector == idSector) {
		//valido que las mesas seleccionadas sean contiguas
			if(cantMesasSel != "0") {
			//solo valido la seleccion de mesas contiguas si ya hay mesas elegidas
				var idAnt = idMesa+1;
				var idPost = idMesa-1;
				var contiguaAntSel = $("#mesa_"+ idAnt).val();
				var contiguaPostSel = $("#mesa_"+ idPost).val();
								
				if((contiguaAntSel != 1) && (contiguaPostSel != 1)) {
				//no tiene al menos una mesa contigua seleccionada. Muestro el error.
					var error = "<div id='error' class='alert alert-dismissable alert-danger'>" +
								"<button class='close' data-dismiss='alert' type='button'>x</button>" +
								"<strong>No se pueden seleccionar mesas no contiguas</strong>" +
								"</div>";
					$("#div_error").html(error);
				} else {
					//tiene mesas contiguas. dejo seleciconar
					$(button).removeClass("btn-success").addClass("btn-info");
					$("#mesa_"+idMesa).val(1);
					$("#sector").val(idSector);
					var sum = cantMesasSel+1;
					$("#cantMesasSeleccion").val(sum);
				}	
			} else {
				//no hay ninguna mesa seleccionada anteriormente. Dejo seleccionar.
				$(button).removeClass("btn-success").addClass("btn-info");
				$("#mesa_"+idMesa).val(1);
				$("#sector").val(idSector);
				var sum = cantMesasSel+1;
				$("#cantMesasSeleccion").val(sum);
			} 	
		} else {
			//la mesa seleccionada es de un sector distinto al que ya esta seteado. Muestro un error.
			var error = "<p class='text-danger'><strong>No se pueden seleccionar mesas de sectores distintos.</strong></p>";
			$("#div_error").html(error);
			$("#div_error").wait(5);
			$("#div_error").hide();
		}
	}else{
		//vuelvo a poner la mesa como "disponible"
		$(button).removeClass("btn-info").addClass("btn-success");
		$("#mesa_"+idMesa).val("");
		var rest = cantMesasSel-1;
		$("#cantMesasSeleccion").val(rest);
		//si no hay mesas seleccionadas, elimino el idSector
		if(cantMesasSel != 0) {
			$("#sector").val("");
		} else {
			$("#sector").val(idSector);
		}
	}				
					
	return true;
}

/**
 * Metodo que pasa todos los datos 
 * a la ventana padre para luego ser guardados.
 */
function guardarSeleccionMesas()
{
	var sector = $("#sector").val();
	var listaMesas = '<ul>';
	
	//seteo los valores en la ventana padre
	var sectorData = "<span id='sectorValue'>"+sector+"</span>" +
					 "<input type='hidden' id='sectorId' name='sectorId' value='"+sector+"' />";
	window.opener.$("#sectorIdDiv").html(sectorData);
	//window.opener.$("#listaMozos").html("cargando");
	$("#seleccionMesas :input").each(function(i,v){
		if($(this).val() == 1){
			//agrego la mesa para mostrarla en una lista
			listaMesas = listaMesas + "<li>" + $(this).attr('name') +"</li>";
			//seteo el valor en la ventana padre
			window.opener.$("#datosSeleccionMesas").append(
					"<input type='hidden' id='"+ $(this).attr('id') +"' name='"
					+ $(this).attr('name') + "' value='1' />");
		}
	});
	//paso la lista a la ventana padre
	listaMesas = listaMesas + "</ul>";
	window.opener.$("#listaMesas").append(listaMesas);
	self.close();
	return true;
}
/**
 * Metodo necesario para abrir el mapa de la sucursal 1
 */
function abrirSeleccionMesasSuc1()
{
	var currentURL = "http://localhost:8080/web/AperturaMesa?accion=abrirMesasSucursal&idSucursal=1";
	window.open(currentURL , '_blank');
}

/**
 * Metodo que chequea la cantidad de comensales
 */
function chequearCantComensales() {
	var cantComensales = $("#cantComensales").val();
	//borro si hay algun error anterior
	$("#cantComensalesError").empty();
	
	if (cantComensales == 'undefined' || cantComensales == '' ) {
		var error = "<p class='text-danger'>Debe Introducir primero la Cantidad de Comensales.</p>";
		$("#cantComensalesError").html(error);
		
		return false;
	}
	return true;
}
/**
 * Metodo que valida que todos los campos del paso 1 de un nuevo pedido esten completos.
 */
function validarPedPaso1() {
	//seteo el valor del boton en "accion" por default
	$("#botonPedPaso2").val("accion");
	
	var mozoId = $("#mozoId").val();
	var aperturaMesaId = $("#aperturaMesaId").val();
	var areaId = $("#areaId").val();
	var error = false;
	
	if (mozoId == 'undefined' || mozoId == '' ) {
		var error = "<p class='text-danger'>No se seleccion&oacute; un mozo.</p>";
		$("#mozoIdError").html(error);
		error = true;
	} else if (aperturaMesaId == 'undefined' || aperturaMesaId == '' ) {
		var error = "<p class='text-danger'>No se seleccion&oacute; Ap. Mesa.</p>";
		$("#aperturaMesaIdError").html(error);
		error = true;
	} else if (areaId == 'undefined' || areaId == '' ) {
		var error = "<p class='text-danger'>No se seleccion&oacute; Area.</p>";
		$("#areaIdError").html(error);
		error = true;
	}
	if(error == true) {
		$("#botonPedPaso2").val("error");
		return false;
	} else {
		$("#botonPedPaso2").val("nuevoPedidoPaso2");
	}
	return true;
}
/**
 * Metodo que agrega items a tabla de nuevo pedido
 */
function agregarItemATabla() {
	var itemText = $("#itemCartaId option:selected").text();
	var itemVal = $("#itemCartaId option:selected").val();
	//agrego el nuevo item a la tabla
	if( itemVal != '') {
		var newItem = '<tr id="itemCartaRow_'+itemVal+'" class="success">' +
					  '<td>'+itemVal+'</td>' +
					  '<td>'+itemText+'</td>'+
				      '<td><a href="#" onclick="eliminarItemPedidoLista('+itemVal+');" ' + 
					  'alt="eliminar"><img src="img/cross.png" alt="eliminar item"></img></a></td></tr>';
			
	   $('#tablaItemsPedidos > tbody:last').append(newItem);
	   $('#selectedItems').append('<input type="hidden" id="itemCarta'+itemVal+'" name="itemCartaIdArray[]" value="'+itemVal+'"></input>');
	}
	return true;
}
/**
 * Metodo que elimina los items de nuevos pedidos
 * @param itemId
 * @returns {Boolean}
 */
function eliminarItemPedidoLista(itemId) {
	alert(itemId);
	$('#itemCartaRow_'+itemId).remove();
	$('#itemCarta'+itemId).remove();
	return true;
}